package com.mars.demo01.bean;

public class ProxyP implements Rent{
    private Rent host;

    //默认通过HostA实现了
    public ProxyP() {
        this.host = new HostA();
    }
    //使用的时候直接给构造函数传递一个Host实现类，因为接口变量可以指向接口实现类
    public ProxyP(Rent rent) {
        this.host = rent;
    }

    @Override
    public void rentRoom() {
        //关键在于这一行，代理终归是中介，最终实现需求的一定是需求提供者
        //中介的作用是包装需求提供者提供的需求，处理一些前置后置条件
        rentBefore();//前置条件
        host.rentRoom();
        rentAfter();//后置条件
    }

    private void rentBefore(){
        System.out.println("中介带看房");
        System.out.println("签订合同，成交");
    }

    private void rentAfter(){
        System.out.println("收取中介费");
    }

}
